package com.tqyan.dal.mapper;

import com.tqyan.model.dto.ChatContentDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @description 会话内容
 * <p> <功能详细描述> </p>
 *
 * @author 陈晨
 * @date 2023/4/10 18:20
 */
@Mapper
public interface ChatContentMapper {

    /**
     * @description 添加
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/10 18:19
     */
    int save(@Param("item") ChatContentDTO item);

    /**
     * @description 更新会话内容
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/12 19:39
     */
    int update(@Param("item") ChatContentDTO item);

    /**
     * @description 追加内容
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/13 17:24
     */
    int appendContent(@Param("chatId") long chatId
            , @Param("gptContentId") String gptContentId
            , @Param("content") String content);
    int appendContentByContentId(@Param("chatId") long chatId
            , @Param("chatContentId") long chatContentId
            , @Param("content") String content);

    /**
     * @description ID查询
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/13 17:25
     */
    ChatContentDTO queryById(@Param("userId") long userId, @Param("chatId") long chatId, @Param("id") long id);

    /**
     * @description 问题ID查询
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/13 17:25
     */
    ChatContentDTO queryByQuestionId(@Param("userId") long userId, @Param("chatId") long chatId, @Param("id") long id);

    /**
     * @description ID查询
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/13 17:25
     */
    ChatContentDTO queryLastByChat(@Param("userId") long userId, @Param("chatId") long chatId);

    /**
     * @description 查询会话内容集合
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/10 18:19
     */
    List<ChatContentDTO> queryByChat(@Param("userId") long userId, @Param("chatId") long chatId);

    /**
     * @description 查询角色会话内容集合倒序
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/10 18:19
     */
    List<ChatContentDTO> queryByChatByRole(@Param("chatId") long chatId
            , @Param("role") String role
            , @Param("start") int start
            , @Param("size") int size);

//    /**
//     * @description 未完成的问答数
//     * <p> <功能详细描述> </p>
//     *
//     * @author 陈晨
//     * @date 2023/4/18 03:26
//     */
//    int countIncomplete(@Param("userId") long userId);

}


